package com.gaga.common.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;

@Slf4j
public class CommonPathUtils {

    public static void main(String[] args) {
        // 获取动态基准路径
        String basePath = getBasePath();
        log.info("当前基准路径: " + basePath);

        // 访问外部配置文件
        Path configPath = Paths.get(basePath, "config", "settings.properties");
        System.out.println("配置文件路径: " + configPath.toAbsolutePath());

        // 访问类路径资源（打包在 JAR 内或 IDE 的 resources 目录）
        InputStream input = CommonPathUtils.class.getResourceAsStream("/static/icon.png");
        if (input != null) {
            System.out.println("成功加载内部资源");
        } else {
            System.out.println("内部资源未找到");
        }
    }

    // 判断是否运行在 JAR 中
    public static boolean isRunningInJar() {
        URL resource = CommonPathUtils.class.getResource(CommonPathUtils.class.getSimpleName() + ".class");
        return resource != null && resource.getProtocol().equals("jar");
    }

    // 获取 JAR 所在目录
    public static String getJarDir() {
        try {
            String jarPath = ResourcesUtils.getVideoRootPath();
            String decodedPath = URLDecoder.decode(jarPath, StandardCharsets.UTF_8);

            String parent = new File(decodedPath).getParent();
            String parent2 = new File(parent).getParent();

            return parent2;
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    // 获取 IDE 工作目录
    public static String getProjectRoot() {
        String userDir = System.getProperty("user.dir");
        String parent = new File(userDir).getParent();
        return new File(parent).getParent();
    }

    // 动态选择基准路径
    public static String getBasePath() {
        return isRunningInJar() ? getJarDir() : getProjectRoot();
    }
}
